package com.atsmart.app.receiver;

import com.atsmart.app.BizApp;
import com.atsmart.log.UserLog;

import android.app.Service;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.telephony.TelephonyManager;
import android.util.Log;

/**
 * 监听sim状态改变的广播，返回sim卡的状态， 有效或者无效。 双卡中只要有一张卡的状态有效即返回状态为有效，两张卡都无效则返回无效。
 * 
 * @author yhl 2013-12-3下午5:10:34 {@link description}
 */
public class SimStateReceive extends BroadcastReceiver {
	private final static String ACTION_SIM_STATE_CHANGED = "android.intent.action.SIM_STATE_CHANGED";
	private final static int SIM_VALID = 0;
	private final static int SIM_INVALID = 1;
	private int simState = SIM_INVALID;

	public int getSimState() {
		return simState;
	}

	@Override
	public void onReceive(Context context, Intent intent) {
		Log.e("TAG","sim state changed");
		if (intent.getAction().equals(ACTION_SIM_STATE_CHANGED)) {
			TelephonyManager tm = (TelephonyManager) context
					.getSystemService(Service.TELEPHONY_SERVICE);
			int state = tm.getSimState();
			if(BizApp.isWrite){
				UserLog.getInstance().writeApkInfo("\n" + "==========" + "\n" + state + "\n" + "===========");
			}
			switch (state) {
			case TelephonyManager.SIM_STATE_READY:
				simState = SIM_VALID;
				break;
			case TelephonyManager.SIM_STATE_UNKNOWN:
			case TelephonyManager.SIM_STATE_ABSENT:
			case TelephonyManager.SIM_STATE_PIN_REQUIRED:
			case TelephonyManager.SIM_STATE_PUK_REQUIRED:
			case TelephonyManager.SIM_STATE_NETWORK_LOCKED:
			default:
				simState = SIM_INVALID;
				break;
			}
		}
	}

}
